/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package proyectoformulariodinamico;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

/**
 *
 * @author David
 */
public class Pregunta extends JPanel implements ActionListener{

    private JLabel lblTituloPregunta,lblTextoAyuda;
    private JLabel lblTipoPregunta;
    private JTextField txtTituloPregunta,txtTextoAyuda;
    private JComboBox cmbxTipoPregunta;
    private JPanel pnlAll,pnlTipoPregunta,pnlAllAll;
    private JButton btnOK;
    
    private Texto txtTexto;
    private TextoParrafo txtAreaTexto;
    private TipoTest Test;
    private CasillaVerificacion Casilla;
    private ElegirLista Lista;
    
    int cont=0;
    int index;
    private String TipoPregunta;
    
    private JLabel lblTitulo = new JLabel(),lblAyuda = new JLabel();

    public Pregunta(int index) {    
        
        JPanel pnlp1,pnlp2,pnlp3,pnlS;
        setBorder(BorderFactory.createLineBorder(Color.BLUE));
        pnlAllAll = new JPanel();
        //pnlAllAll.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY));
        pnlAllAll.setLayout(new BorderLayout());
        add(pnlAllAll);
        //setLayout(new BorderLayout());
        pnlAllAll.add(pnlS = new JPanel(),BorderLayout.SOUTH);
        //add(pnlS = new JPanel(),BorderLayout.SOUTH);
        pnlS.setLayout(new FlowLayout(FlowLayout.LEFT));
        pnlS.add(btnOK = new JButton("OK"));
        pnlAllAll.add(pnlAll = new JPanel(),BorderLayout.CENTER);
        //add(pnlAll = new JPanel(),BorderLayout.CENTER);
        pnlAll.setLayout(new BoxLayout(pnlAll,BoxLayout.PAGE_AXIS));
        pnlAll.add(pnlp1 = new JPanel());
        pnlAll.add(pnlp2 = new JPanel());
        pnlAll.add(pnlp3 = new JPanel());
                       
        pnlp1.setLayout(new FlowLayout(FlowLayout.LEFT));
        //pnlp1.setBorder(BorderFactory.createLineBorder(Color.red));
        pnlp2.setLayout(new FlowLayout(FlowLayout.LEFT));
        pnlp3.setLayout(new FlowLayout(FlowLayout.LEFT));
        
        pnlp1.add(lblTitulo);
        lblTitulo.setVisible(false);
        pnlp1.add(lblTituloPregunta = new JLabel("Titulo de la pregunta  "));
        pnlp1.add(txtTituloPregunta = new JTextField(30));
        
        pnlp2.add(lblAyuda);
        lblAyuda.setVisible(false);
        pnlp2.add(lblTextoAyuda = new JLabel("Texto de ayuda           "));
        pnlp2.add(txtTextoAyuda = new JTextField(30));
        
        pnlp3.add(lblTipoPregunta = new JLabel("Tipo de pregunta        "));
        String[] tipoPregunta = {"Texto","Texto de párrafo","Tipo test"
                                    ,"Casilla de verificación","Elejir de una lista"};
        pnlp3.add(cmbxTipoPregunta = new JComboBox(tipoPregunta));
        
        pnlAll.add(pnlTipoPregunta = new JPanel());
        pnlTipoPregunta.setLayout(new FlowLayout(FlowLayout.LEFT));
        
        
        //cmbxTipoPregunta.addItemListener(this);
        
        
        //---------------------------------------------------------------------        
        cmbxTipoPregunta.addItemListener(new java.awt.event.ItemListener() {
            @Override
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                cmbxTipoPreguntaItemStateChanged(evt);
            }
        });
        
        btnOK.addActionListener(new java.awt.event.ActionListener() {
            @Override
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnOKActionPerformed(evt);
            }
        });
        
        if(index == 0){
            txtTexto = new Texto();
            pnlTipoPregunta.add(txtTexto);                 
            txtTexto.updateUI();
        }else{
            cmbxTipoPregunta.setSelectedIndex(index);            
        }               
    }
        
    @Override
    public void actionPerformed(ActionEvent e) {
        throw new UnsupportedOperationException("Not supported yet.");
    } 
    
    private void cmbxTipoPreguntaItemStateChanged(java.awt.event.ItemEvent evt) {
        index = cmbxTipoPregunta.getSelectedIndex();        
        cont++;
        //System.out.println(index+"-"+"contador"+cont+"\n");
        if(cont == 1){            
            //System.out.println(index+"-"+"contador"+cont+"**");
            switch(index){
                case 0:
                    if(txtAreaTexto instanceof TextoParrafo){
                        txtAreaTexto.setVisible(false);
                        txtAreaTexto = null;
                    }
                    if(Test instanceof TipoTest){
                        Test.setVisible(false);
                        Test = null;
                    }
                    if(Casilla instanceof CasillaVerificacion){
                        Casilla.setVisible(false);
                        Casilla = null;
                    }
                    if(Lista instanceof ElegirLista){
                        Lista.setVisible(false);
                        Lista = null;
                    }
                    txtTexto = new Texto();
                    pnlTipoPregunta.add(txtTexto);                    
                    txtTexto.updateUI();
                    break;
                case 1:
                    if(txtTexto instanceof Texto){
                        txtTexto.setVisible(false);
                        txtTexto = null;
                    }
                    if(Test instanceof TipoTest){
                        Test.setVisible(false);
                        Test = null;
                    }
                    if(Casilla instanceof CasillaVerificacion){
                        Casilla.setVisible(false);
                        Casilla = null;
                    }
                    if(Lista instanceof ElegirLista){
                        Lista.setVisible(false);
                        Lista = null;
                    }
                    txtAreaTexto = new TextoParrafo();
                    pnlTipoPregunta.add(txtAreaTexto);
                    updateUI();
                    break;
                case 2:
                    if(txtTexto instanceof Texto){
                        txtTexto.setVisible(false);
                        txtTexto = null;
                    }
                    if(txtAreaTexto instanceof TextoParrafo){
                        txtAreaTexto.setVisible(false);
                        txtAreaTexto = null;
                    }
                    if(Casilla instanceof CasillaVerificacion){
                        Casilla.setVisible(false);
                        Casilla = null;
                    }
                    if(Lista instanceof ElegirLista){
                        Lista.setVisible(false);
                        Lista = null;
                    }
                    Test = new TipoTest();
                    pnlTipoPregunta.add(Test);
                    updateUI();
                    break;
                case 3:                    
                    if(txtTexto instanceof Texto){
                        txtTexto.setVisible(false);
                        txtTexto = null;
                    }
                    if(txtAreaTexto instanceof TextoParrafo){
                        txtAreaTexto.setVisible(false);
                        txtAreaTexto = null;
                    }
                    if(Test instanceof TipoTest){
                        Test.setVisible(false);
                        Test = null;
                    }
                    if(Lista instanceof ElegirLista){
                        Lista.setVisible(false);
                        Lista = null;
                    }
                    Casilla = new CasillaVerificacion();
                    pnlTipoPregunta.add(Casilla);
                    updateUI();
                    break;
                case 4:
                    if(txtTexto instanceof Texto){
                        txtTexto.setVisible(false);
                        txtTexto = null;
                    }
                    if(txtAreaTexto instanceof TextoParrafo){
                        txtAreaTexto.setVisible(false);
                        txtAreaTexto = null;
                    }
                    if(Test instanceof TipoTest){
                        Test.setVisible(false);
                        Test = null;
                    }
                    if(Casilla instanceof CasillaVerificacion){
                        Casilla.setVisible(false);
                        Casilla = null;
                    }
                    Lista = new ElegirLista();
                    pnlTipoPregunta.add(Lista);
                    break;
            }
        }
        if(cont ==2){
            cont = 0;
        }
        repaint();
    }
    
    private void btnOKActionPerformed(java.awt.event.ActionEvent evt) {
        switch(index){
            case 0:
                TipoPregunta = "Texto";                
                txtTexto.vistaOK();
                vistaOK();                
                break;
            case 1:
                TipoPregunta = "Texto de párrafo";
                txtAreaTexto.vistaOK();
                vistaOK();                
                break;
            case 2:
                TipoPregunta = "Tipo test";
                vistaOK();
                Test.vistaOK();
                break;
            case 3:
                TipoPregunta = "Casilla de verificación";
                Casilla.vistaOK();
                vistaOK();                
                break;
            case 4:
                TipoPregunta = "Elegir de una lista";
                vistaOK();
                Lista.vistaOK();
                break;
        }        
    }
    
    public void vistaOK(){
        lblTitulo.setText(txtTituloPregunta.getText());
        lblAyuda.setText(txtTextoAyuda.getText());

        lblTitulo.setVisible(true);
        lblAyuda.setVisible(true);
        lblTituloPregunta.setVisible(false);
        lblTextoAyuda.setVisible(false);
        txtTituloPregunta.setVisible(false);
        txtTextoAyuda.setVisible(false);
        lblTipoPregunta.setVisible(false);
        cmbxTipoPregunta.setVisible(false);
    }
    
    public Question getQuestion(){
        Question q = null;
        switch(index){
            case 0:
                q = new Question(lblTitulo.getText(),txtTexto.getTexto());
                break;
            case 1:
                q = new Question(lblTitulo.getText(),txtAreaTexto.getContenidoArea());
                break;
            case 2:
                q = new Question(lblTitulo.getText(),Test.getAnswer());
                break;
            case 3:
                q = new Question(lblTitulo.getText(),Casilla.getAnswer());
                break;
            case 4:
                q = new Question(lblTitulo.getText(),Lista.getAnswer());
                break;
        }
        return q;
    }
    
    public void Clear(){
        switch(index){
            case 0:
                txtTexto.Clear();
                break;
            case 1:
                txtAreaTexto.Clear();
                break;
            case 2:
                Test.Clear();                
                break;
            case 3:
                Casilla.Clear();
                break;
            case 4:
                Lista.Clear();
                break;
        }
    }
}
